// spElement.js


      function drawTable() {
	
		jQuery('.testtable').each(function(){
			content = jQuery(this).html();
			o = jQuery.parseJSON( content );
			var data = new google.visualization.DataTable(o);
			var table = new google.visualization.Table( jQuery(this).get()[0] );
			table.draw(data, {
				showRowNumber: true,
				allowHtml: true
			});
		});	
	}


google.load('visualization', '1', {packages:['table']});
google.setOnLoadCallback(drawTable);

//jQuery(function() {
jQuery(document).ready(function(){
	spAddToListCombo_init();
	spAddToListBase_init();

	////////////////////////////////////////////////////////////////
	// handle sortable and draggable
	////////////////////////////////////////////////////////////////

	jQuery( ".spDraggable" ).draggable({
		connectToSortable: ".spSortableContainer",
		helper: "clone",
		revert: "invalid",
		delay : 200
    });
	
	jQuery( ".spSortableContainer" ).sortable({
		revert: true,
		delay : 200,
		update : function(event,ui){
			ui.item.find("input").css( "display", "block" );
			ui.item.find("input").removeAttr( "disabled" );
			ui.item.find("textarea").removeAttr( "disabled" );
		}
    });

	////////////////////////////////////////////////////////////////
	// tabs
	////////////////////////////////////////////////////////////////

	jQuery( ".spTab" ).tabs();
	
	////////////////////////////////////////////////////////////////
	// floating menu
	////////////////////////////////////////////////////////////////
	
	function moveFloatMenu() {
		var menuOffset = menuYloc.top + jQuery(this).scrollTop() + "px";
		jQuery('#floatMenu').animate({top:menuOffset},{duration:500,queue:false});
	}
 
	if ( jQuery('#floatMenu').length )
	{
		menuYloc = jQuery('#floatMenu').offset();
		jQuery(window).scroll(moveFloatMenu);
		moveFloatMenu();	
	}
		
	////////////////////////////////////////////////////////////////
	// datepicker
	////////////////////////////////////////////////////////////////
	
	jQuery( ".spDateInput" ).datepicker({
		dateFormat: "dd-mm-yy",
		defaultDate: jQuery(".spDateInput").val(),
		showOn: "button",
		buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
		buttonImageOnly: true,
		changeMonth: true,
		changeYear: true,
		yearRange: "1940:c"
	});

	////////////////////////////////////////////////////////////////
	// stage_root : handle expand and collapse
	////////////////////////////////////////////////////////////////

	jQuery( ".stage_expand" ).on( "click", function() {
		jQuery( this ).hide(); // hide icon
		jQuery( this ).closest( ".stage_root" ).find( ".stage_content" ).css( "display", "block" );
		jQuery( this ).prev( ".stage_collapse" ).show();
	});

	jQuery( ".stage_collapse" ).on( "click", function() {
	
		jQuery( this ).hide(); // hide icon
		jQuery( this ).closest( ".stage_root" ).find( ".stage_content" ).css( "display", "none" );
		jQuery( this ).next( ".stage_expand" ).show();
	});

	// update stage titles (realtime)
	jQuery( ".stage-input-title" ).on( "keyup", function(){
		var text = jQuery(this).val();
		var root = jQuery( this ).closest( ".stage_root" );
		var section_name = root.find( ".wpAddToListSectionPart-section-name" ).text();
		root.find( ".stage-legend-title" ).text( section_name+text );
	});

	////////////////////////////////////////////////////////////////
	// image upload (very wordpressy)
	////////////////////////////////////////////////////////////////

	var uploadID = '';

	jQuery('.image_upload_button').on( "click", function() {
		uploadID = jQuery(this).prev('input'); // grab the specific input
		formfield = jQuery('.image_input').attr('name');
		tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true&post_id=1');
		return false;
	});

	window.send_to_editor = function(html) {
		imgurl = jQuery('img',html).attr('src');
		uploadID.val(imgurl);

		uploadID.parent().find( ".show_image" ).attr( "src", imgurl );

		tb_remove();
	}

	////////////////////////////////////////////////////////////////
	// spAddToListText
	////////////////////////////////////////////////////////////////
/*
	jQuery( ".spAddToListText" ).each(function(){

		jQuery(this).find(".spAddToListText-ul").sortable({
			connectWith: jQuery(this).find(".spAddToListText-trash" ),
			placeholder: "ui-state-highlight",
			forcePlaceholderSize: true
		}).disableSelection();

		jQuery(this).find(".spAddToListText-trash" ).droppable({
			accept: ".spAddToListText-ul li",
			hoverClass: "ui-state-hover",
			drop: function(ev, ui) {
				ui.draggable.remove();
			}
		});

		jQuery(this).find( "input[name=add]" ).click(function(){
			var val = jQuery(this).parent().find(".spAddToListText-text").val();
			if ( val!="" )
				jQuery(this).next( "table" ).find(".spAddToListText-ul").prepend( "<li class='ui-state-default'>"+val+"</li>" );
		});

	});
*/
});


	////////////////////////////////////////////////////////////////
	// spAddToListBase
	////////////////////////////////////////////////////////////////

	function spAddToListBase_init()
	{
		jQuery( ".spAddToListBase" ).each(function(){

			var id = jQuery(this).find(".spAddToListBase-id").text();

			jQuery(this).find(".spAddToListBase-list").sortable({
				connectWith: jQuery(this).find(".spAddToListBase-trash" ),
				placeholder: "ui-state-highlight",
				forcePlaceholderSize: true
			});

			var org = jQuery( this );
			jQuery(this).find( "input[name=add]" ).click(function(){
				var insertme = org.find( ".spAddToListBase-insertme .spAddToListBase-clonable-"+id ).first().clone();
				jQuery(this).next( "table" ).find(".spAddToListBase-list").append( insertme );
			});

			jQuery(this).find(".spAddToListBase-trash" ).droppable({
				accept: ".spAddToListBase-clonable-"+id,
				hoverClass: "ui-state-hover",
				tolerance: 'pointer',
				drop: function(ev, ui) {
					ui.draggable.remove();
				}
			});

		});
	}

	function spAddToListCombo_init()
	{
		jQuery( ".spAddToListCombo" ).each(function(){

			jQuery(this).find(".spAddToListCombo-ul").sortable({
				connectWith: jQuery(this).find(".spAddToListCombo-trash" ),
				placeholder: "ui-state-highlight",
				forcePlaceholderSize: true
			}).disableSelection();

			jQuery(this).find(".spAddToListCombo-trash" ).droppable({
				accept: ".spAddToListCombo-ul li",
				hoverClass: "ui-state-hover",
				drop: function(ev, ui) {
					ui.draggable.remove();
				}
			});

			jQuery(this).find( "input[name=add]" ).click( function(){
				var selectedItem = jQuery(this).parent().find(".spAddToListCombo-combo option:selected")
				var text = selectedItem.text();
				var val = selectedItem.val();

				jQuery(this).next( "table" ).find(".spAddToListCombo-ul").prepend( "<li value='"+val+"' class='ui-state-default'>"+text+"</li>" );
			});

		});
	}
